<?php

/**
 * 身份类接口
 */
interface JCAT_IIdentity
{
	
	/**
	 * 主要用于会话恢复时
	 * 
	 * @access	public
	 * @return	void
	 */
	public function __wakeup() ;
	
	/**
	 * 取得身份类型
	 *
	 * @access	public
	 * @return	string
	 */
	public function GetIdentityClass() ;
	
	/**
	 * 用户注册
	 * 
	 * @access	public
	 * @return	bool
	 */
	public function Register() ;
	
	/**
	 * 用户注销
	 * 
	 * @access	public
	 * @return	bool
	 */
	public function Unregister() ;

	
	/**
	 * 修改用户信息
	 * 
	 * @access	public
	 * @param	$arrDataNamesForModify=array()		array		被修改的指定数据名称,如果为空则修改所有数据
	 * @return	bool
	 */
	public function ModifyUserInfomation( array $arrDataNamesForModify=array() ) ;
	
	/**
	 * 登录
	 * 
	 * @access	public
	 * @param 	$sAuthName		string	认证用户名
	 * @param 	$sAuthPassword	string	认证用户密码
	 * @return	bool
	 */
	public function Login($sAuthName,$sAuthPassword) ;

	/**
	 * 登出
	 * 
	 * @access	public
	 * @return	bool
	 */
	public function Logout() ;
	
	/**
	 * 加查是否已登录
	 * 
	 * @access	public
	 * @return	bool
	 */
	public function IsLogined() ;
	
	
	/**
	 * 检查权限
	 * 
	 * @access	public
	 * @param	$nPurviewBit		int			权限位
	 * @param	$sPurviewName=null	string		指定权限名称
	 * @return	bool
	 */
	public function HasPurview($nPurviewBit,$sPurviewName=null) ;
	
	
	/**
	 * 设置最新的活动时间
	 * 
	 * @access	public
	 * @return	int
	 */
	public function Active() ;
	
	
	/**
	 * 设置会话对象
	 * 
	 * @access	public
	 * @param	$aSession	JCAT_ISession	会话
	 * @return	old_value
	 */
	public function SetSession(JCAT_ISession $aSession) ;
	
	/**
	 * 取得会话对象
	 * 
	 * @access	public
	 * @return	JCAT_ISession
	 */
	public function GetSession() ;
	
	/**
	 * 设置最新的活动时间
	 * 
	 * @access	public
	 * @param 	$nAuthID		int		认证用户ID
	 * @param 	$sSessionKey	string	认证用户会话名
	 * @return	int
	 */
	public function LoadFromSession($nAuthID,$sSessionKey) ;

	
	/**
	 * 设置密码加密方式
	 * 
	 * @access	public
	 * @param	$Encryption=JCAT_Authentication::MD5_PASSWORD		callback	加密函数
	 * @return	void
	 */
	public function SetEncryption( $Encryption=JCAT_Authentication::PASSWORD_MD5 ) ;
	
	/**
	 * 取得密码加密方式
	 * 
	 * @access	public
	 * @return	callback
	 */
	public function GetEncryption() ;
	
	/**
	 * 取得认证用户名
	 * 
	 * @access	public
	 * @return	string
	 */
	public function GetAuthName() ;
	
	/**
	 * 取得认证密码（加密过的密文）
	 * 
	 * @access	public
	 * @return	string
	 */
	public function GetAuthPassword() ;
	
	/**
	 * 取得帐号创建时间
	 * 
	 * @access	public
	 * @return	int
	 */
	public function GetCreateTime() ;
	
	/**
	 * 取得最近登录时间
	 * 
	 * @access	public
	 * @return	int
	 */
	public function GetLastLoginTime() ;
	
	/**
	 * 取得最近登录IP
	 * 
	 * @access	public
	 * @return	string
	 */
	public function GetLastLoginIP() ;
	
	/**
	 * 取得最近活动时间
	 * 
	 * @access	public
	 * @return	string
	 */
	public function GetActiveTime() ;
	
}

?>
